package my.design.combination;

import java.util.ArrayList;
import java.util.List;

/**
 * @author zp
 * @version 1.0
 * @description: 服装
 * @date 2022/10/12 19:08
 */
public class Clothing extends Composite{

    /**
     * 用来存储组合对象中包含的子组件对象
     */
    private final List<Component> childComponents = new ArrayList<Component>();

    /**
     * 组合对象的名字
     */
    private final String name;
    /**
     * 构造方法，传入组合对象的名字
     *
     * @param name 组合对象的名字
     */
    public Clothing(String name) {
        super(name);
        this.name = "衣服："+name;
    }

    @Override
    public String getName() {
        return super.getName();
    }

    @Override
    public void addChild(Component child) {
        childComponents.add(child);
    }

    @Override
    public void removeChild(int index) {
        childComponents.remove(index);
    }

    @Override
    public List<Component> getChild() {
        return childComponents;
    }

    @Override
    public void printStruct(String preStr) {
        // 先把自己输出
        System.out.println(preStr + "+" + this.name);
        //如果还包含有子组件，那么就输出这些子组件对象
        //添加两个空格，表示向后缩进两个空格
        preStr += "  ";
        //输出当前对象的子对象
        for (Component c : childComponents) {
            //递归输出每个子对象
            c.printStruct(preStr);
        }
    }
}
